Micron Document
Manual: `F0af`_`[Destinations ↗`a8d24177d946de4f1f0a0fe1af9a1338:/page/blob.mu`g=reticulum|r=reticulum|ref=HEAD|path=docs/markdown/understanding.md]`_`f

A `!destination`! is an endpoint in a `F0af`_`[Reticulum`:/page/wiki.mu`path=Reticulum_Protocol]`_`f network that can be addressed and communicated with.

As the name implies, it's the destination of `F0af`_`[packets`:/page/wiki.mu`path=Packet]`_`f. Applications create destinations to receive and send data. By `F0af`_`[announcing`:/page/wiki.mu`path=Announce]`_`f their existence, they become reachable from anywhere in the network.

Destinations correspond roughly to IP addresses + ports in TCP/IP, but represent a fundamental shift from location-based addressing to identity-based addressing.`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f] Any destination in the network can be reached by knowing only its hash. (And the public key of its `F0af`_`[identity`:/page/wiki.mu`path=Identity]`_`f for `*single`* destinations, but if the public key is not known, it can be `F0af`_`[requested`:/page/wiki.mu`path=Transport_node|anchor=cryptographic-keystores]`_`f from the network.)

Destinations are portable. They are allowed to move around the network, even across networks. After moving to a new location in the network topology, it only has to broadcast a new announce, and after a short while, it will be globally reachable again.

>>Contents

• `F0af`_`[Types`#types]`_`f
• `F0af`_`[Hash`#hash]`_`f
• `F0af`_`[Aspects`#aspects]`_`f
• `F0af`_`[Usage`#usage]`_`f
• `F0af`_`[See also`#see-also]`_`f
• `F0af`_`[References`#references]`_`f

>>Types

• `!Single`! – Always encrypted, identified by a unique public key, with initiator anonymity. The most common type. Multi-hop.
• `!Plain`! – Unencrypted, suitable for public broadcast information. Single-hop.
• `!Group`! – Symmetrically encrypted, readable by anyone with the key. Single-hop. (Multi-hop group communication is planned.)
• `!Link`! – A secure channel to a `*single`* destination providing reliability, forward secrecy, large data transfers and more. A special type. Multi-hop.

>>Hash

Destinations are represented by an immutable 16-byte hash derived from truncating a full SHA-256 hash of the destination's identifying characteristics. It is displayed as hexadecimal bytes, for example: `B100`F9d913425ec15b621c1d928589718000d814`f`b

More specifically, it's a hash of a dotted notation of the destination's `*app name`* and `*aspects`*, for example: `B100`F9d9appname.remotesensor.temperature`f`b

In the case of `*single`* destinations, the `F0af`_`[identity hash`:/page/wiki.mu`path=Identity|anchor=hash]`_`f is also included, ensuring that even though two destinations have the same aspects, their hashes will be unique.

`B100`F9d9name_hash = truncate(SHA256(dotnotate(app_name, aspect1, aspect2, …)))`f`b
`B100`F9d9single_destination_hash = truncate(SHA256(concatenate(name_hash, identity_hash)))`f`b

>>Aspects

A destination has one or more aspects. Aspects are a destination's human-readable name, making it easy to structure applications and filter what data they receive. There is no limit to the amount or length of aspects, as destinations are always represented by the truncated hash on the network.

>>Usage

See `F0af`_`[this code example ↗`a8d24177d946de4f1f0a0fe1af9a1338:/page/blob.mu`g=reticulum|r=reticulum|ref=HEAD|path=docs/markdown/examples.md|anchor=announce]`_`f in the manual, showing how to create two `*single`* destinations.

>>See also

• `F0af`_`[Announce`:/page/wiki.mu`path=Announce]`_`f
• `F0af`_`[Path`:/page/wiki.mu`path=Path]`_`f
• `F0af`_`[rnprobe`:/page/wiki.mu`path=Rnprobe]`_`f
• `F0af`_`[rnid`:/page/wiki.mu`path=Rnid]`_`f

>>References

`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f `*Death To The Address`*, Manual. `F0af`_`[`a8d24177d946de4f1f0a0fe1af9a1338:/page/blob.mu`g=reticulum|r=reticulum|ref=HEAD|path=docs/markdown/zen.md|anchor=death-to-the-address] ↗`_`f

>>Reticulum concepts

`F0af`_`[Announce`:/page/wiki.mu`path=Announce]`_`f • `F0af`_`[Blackhole`:/page/wiki.mu`path=Blackhole]`_`f • `F0af`_`[Buffer`:/page/wiki.mu`path=Buffer]`_`f • `F0af`_`[Channel`:/page/wiki.mu`path=Channel]`_`f • Destination • `F0af`_`[Discovery`:/page/wiki.mu`path=Discovery]`_`f • `F0af`_`[Identity`:/page/wiki.mu`path=Identity]`_`f • `F0af`_`[Instance`:/page/wiki.mu`path=Instance]`_`f • `F0af`_`[Interface`:/page/wiki.mu`path=Interface]`_`f • `F0af`_`[Interface Access Code`:/page/wiki.mu`path=Interface_Access_Code]`_`f (IFAC) • `F0af`_`[Link`:/page/wiki.mu`path=Link]`_`f • `F0af`_`[Network identity`:/page/wiki.mu`path=Network_identity]`_`f • `F0af`_`[Node`:/page/wiki.mu`path=Node]`_`f • `F0af`_`[Packet`:/page/wiki.mu`path=Packet]`_`f • `F0af`_`[Path`:/page/wiki.mu`path=Path]`_`f • `F0af`_`[Propagation node`:/page/wiki.mu`path=Propagation_node]`_`f • `F0af`_`[Resource`:/page/wiki.mu`path=Resource]`_`f • `F0af`_`[Stamp`:/page/wiki.mu`path=Stamp]`_`f • `F0af`_`[Transport node`:/page/wiki.mu`path=Transport_node]`_`f

>>Destination

`!Source:`! `F0af`_`[Destination.py ↗`a8d24177d946de4f1f0a0fe1af9a1338:/page/blob.mu`g=reticulum|r=reticulum|ref=HEAD|path=RNS/Destination.py]`_`f
`!API:`! `F0af`_`[RNS.Destination ↗`a8d24177d946de4f1f0a0fe1af9a1338:/page/blob.mu`g=reticulum|r=reticulum|ref=HEAD|path=docs/markdown/reference.md|anchor=RNS.Destination]`_`f